<!doctype html>
<html>
<head>
<meta charset='UTF-8'><meta name='viewport' content='width=device-width initial-scale=1'>

<style type='text/css'>html {overflow-x: initial !important;}:root { --bg-color:#ffffff; --text-color:#333333; --select-text-bg-color:#B5D6FC; --select-text-font-color:auto; --monospace:"Lucida Console",Consolas,"Courier",monospace; --title-bar-height:20px; }
.mac-os-11 { --title-bar-height:28px; }
html { font-size: 14px; background-color: var(--bg-color); color: var(--text-color); font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; -webkit-font-smoothing: antialiased; }
h1, h2, h3, h4, h5 { white-space: pre-wrap; }
body { margin: 0px; padding: 0px; height: auto; inset: 0px; font-size: 1rem; line-height: 1.42857; overflow-x: hidden; background: inherit; tab-size: 4; }
iframe { margin: auto; }
a.url { word-break: break-all; }
a:active, a:hover { outline: 0px; }
.in-text-selection, ::selection { text-shadow: none; background: var(--select-text-bg-color); color: var(--select-text-font-color); }
#write { margin: 0px auto; height: auto; width: inherit; word-break: normal; overflow-wrap: break-word; position: relative; white-space: normal; overflow-x: visible; padding-top: 36px; }
#write.first-line-indent p { text-indent: 2em; }
#write.first-line-indent li p, #write.first-line-indent p * { text-indent: 0px; }
#write.first-line-indent li { margin-left: 2em; }
.for-image #write { padding-left: 8px; padding-right: 8px; }
body.typora-export { padding-left: 30px; padding-right: 30px; }
.typora-export .footnote-line, .typora-export li, .typora-export p { white-space: pre-wrap; }
.typora-export .task-list-item input { pointer-events: none; }
@media screen and (max-width: 500px) {
  body.typora-export { padding-left: 0px; padding-right: 0px; }
  #write { padding-left: 20px; padding-right: 20px; }
}
#write li > figure:last-child { margin-bottom: 0.5rem; }
#write ol, #write ul { position: relative; }
img { max-width: 100%; vertical-align: middle; image-orientation: from-image; }
button, input, select, textarea { color: inherit; font: inherit; }
input[type="checkbox"], input[type="radio"] { line-height: normal; padding: 0px; }
*, ::after, ::before { box-sizing: border-box; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p, #write pre { width: inherit; }
#write h1, #write h2, #write h3, #write h4, #write h5, #write h6, #write p { position: relative; }
p { line-height: inherit; }
h1, h2, h3, h4, h5, h6 { break-after: avoid-page; break-inside: avoid; orphans: 4; }
p { orphans: 4; }
h1 { font-size: 2rem; }
h2 { font-size: 1.8rem; }
h3 { font-size: 1.6rem; }
h4 { font-size: 1.4rem; }
h5 { font-size: 1.2rem; }
h6 { font-size: 1rem; }
.md-math-block, .md-rawblock, h1, h2, h3, h4, h5, h6, p { margin-top: 1rem; margin-bottom: 1rem; }
.hidden { display: none; }
.md-blockmeta { color: rgb(204, 204, 204); font-weight: 700; font-style: italic; }
a { cursor: pointer; }
sup.md-footnote { padding: 2px 4px; background-color: rgba(238, 238, 238, 0.7); color: rgb(85, 85, 85); border-radius: 4px; cursor: pointer; }
sup.md-footnote a, sup.md-footnote a:hover { color: inherit; text-transform: inherit; text-decoration: inherit; }
#write input[type="checkbox"] { cursor: pointer; width: inherit; height: inherit; }
figure { overflow-x: auto; margin: 1.2em 0px; max-width: calc(100% + 16px); padding: 0px; }
figure > table { margin: 0px; }
thead, tr { break-inside: avoid; break-after: auto; }
thead { display: table-header-group; }
table { border-collapse: collapse; border-spacing: 0px; width: 100%; overflow: auto; break-inside: auto; text-align: left; }
table.md-table td { min-width: 32px; }
.CodeMirror-gutters { border-right: 0px; background-color: inherit; }
.CodeMirror-linenumber { user-select: none; }
.CodeMirror { text-align: left; }
.CodeMirror-placeholder { opacity: 0.3; }
.CodeMirror pre { padding: 0px 4px; }
.CodeMirror-lines { padding: 0px; }
div.hr:focus { cursor: none; }
#write pre { white-space: pre-wrap; }
#write.fences-no-line-wrapping pre { white-space: pre; }
#write pre.ty-contain-cm { white-space: normal; }
.CodeMirror-gutters { margin-right: 4px; }
.md-fences { font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; overflow: visible; white-space: pre; background: inherit; position: relative !important; }
.md-fences-adv-panel { width: 100%; margin-top: 10px; text-align: center; padding-top: 0px; padding-bottom: 8px; overflow-x: auto; }
#write .md-fences.mock-cm { white-space: pre-wrap; }
.md-fences.md-fences-with-lineno { padding-left: 0px; }
#write.fences-no-line-wrapping .md-fences.mock-cm { white-space: pre; overflow-x: auto; }
.md-fences.mock-cm.md-fences-with-lineno { padding-left: 8px; }
.CodeMirror-line, twitterwidget { break-inside: avoid; }
svg { break-inside: avoid; }
.footnotes { opacity: 0.8; font-size: 0.9rem; margin-top: 1em; margin-bottom: 1em; }
.footnotes + .footnotes { margin-top: 0px; }
.md-reset { margin: 0px; padding: 0px; border: 0px; outline: 0px; vertical-align: top; background: 0px 0px; text-decoration: none; text-shadow: none; float: none; position: static; width: auto; height: auto; white-space: nowrap; cursor: inherit; -webkit-tap-highlight-color: transparent; line-height: normal; font-weight: 400; text-align: left; box-sizing: content-box; direction: ltr; }
li div { padding-top: 0px; }
blockquote { margin: 1rem 0px; }
li .mathjax-block, li p { margin: 0.5rem 0px; }
li blockquote { margin: 1rem 0px; }
li { margin: 0px; position: relative; }
blockquote > :last-child { margin-bottom: 0px; }
blockquote > :first-child, li > :first-child { margin-top: 0px; }
.footnotes-area { color: rgb(136, 136, 136); margin-top: 0.714rem; padding-bottom: 0.143rem; white-space: normal; }
#write .footnote-line { white-space: pre-wrap; }
@media print {
  body, html { border: 1px solid transparent; height: 99%; break-after: avoid; break-before: avoid; font-variant-ligatures: no-common-ligatures; }
  #write { margin-top: 0px; border-color: transparent !important; padding-top: 0px !important; padding-bottom: 0px !important; }
  .typora-export * { -webkit-print-color-adjust: exact; }
  .typora-export #write { break-after: avoid; }
  .typora-export #write::after { height: 0px; }
  .is-mac table { break-inside: avoid; }
  #write > p:nth-child(1) { margin-top: 0px; }
  .typora-export-show-outline .typora-export-sidebar { display: none; }
  figure { overflow-x: visible; }
}
.footnote-line { margin-top: 0.714em; font-size: 0.7em; }
a img, img a { cursor: pointer; }
pre.md-meta-block { font-size: 0.8rem; min-height: 0.8rem; white-space: pre-wrap; background: rgb(204, 204, 204); display: block; overflow-x: hidden; }
p > .md-image:only-child:not(.md-img-error) img, p > img:only-child { display: block; margin: auto; }
#write.first-line-indent p > .md-image:only-child:not(.md-img-error) img { left: -2em; position: relative; }
p > .md-image:only-child { display: inline-block; width: 100%; }
#write .MathJax_Display { margin: 0.8em 0px 0px; }
.md-math-block { width: 100%; }
.md-math-block:not(:empty)::after { display: none; }
.MathJax_ref { fill: currentcolor; }
[contenteditable="true"]:active, [contenteditable="true"]:focus, [contenteditable="false"]:active, [contenteditable="false"]:focus { outline: 0px; box-shadow: none; }
.md-task-list-item { position: relative; list-style-type: none; }
.task-list-item.md-task-list-item { padding-left: 0px; }
.md-task-list-item > input { position: absolute; top: 0px; left: 0px; margin-left: -1.2em; margin-top: calc(1em - 10px); border: none; }
.math { font-size: 1rem; }
.md-toc { min-height: 3.58rem; position: relative; font-size: 0.9rem; border-radius: 10px; }
.md-toc-content { position: relative; margin-left: 0px; }
.md-toc-content::after, .md-toc::after { display: none; }
.md-toc-item { display: block; color: rgb(65, 131, 196); }
.md-toc-item a { text-decoration: none; }
.md-toc-inner:hover { text-decoration: underline; }
.md-toc-inner { display: inline-block; cursor: pointer; }
.md-toc-h1 .md-toc-inner { margin-left: 0px; font-weight: 700; }
.md-toc-h2 .md-toc-inner { margin-left: 2em; }
.md-toc-h3 .md-toc-inner { margin-left: 4em; }
.md-toc-h4 .md-toc-inner { margin-left: 6em; }
.md-toc-h5 .md-toc-inner { margin-left: 8em; }
.md-toc-h6 .md-toc-inner { margin-left: 10em; }
@media screen and (max-width: 48em) {
  .md-toc-h3 .md-toc-inner { margin-left: 3.5em; }
  .md-toc-h4 .md-toc-inner { margin-left: 5em; }
  .md-toc-h5 .md-toc-inner { margin-left: 6.5em; }
  .md-toc-h6 .md-toc-inner { margin-left: 8em; }
}
a.md-toc-inner { font-size: inherit; font-style: inherit; font-weight: inherit; line-height: inherit; }
.footnote-line a:not(.reversefootnote) { color: inherit; }
.reversefootnote { font-family: ui-monospace, sans-serif; }
.md-attr { display: none; }
.md-fn-count::after { content: "."; }
code, pre, samp, tt { font-family: var(--monospace); }
kbd { margin: 0px 0.1em; padding: 0.1em 0.6em; font-size: 0.8em; color: rgb(36, 39, 41); background: rgb(255, 255, 255); border: 1px solid rgb(173, 179, 185); border-radius: 3px; box-shadow: rgba(12, 13, 14, 0.2) 0px 1px 0px, rgb(255, 255, 255) 0px 0px 0px 2px inset; white-space: nowrap; vertical-align: middle; }
.md-comment { color: rgb(162, 127, 3); opacity: 0.6; font-family: var(--monospace); }
code { text-align: left; vertical-align: initial; }
a.md-print-anchor { white-space: pre !important; border-width: initial !important; border-style: none !important; border-color: initial !important; display: inline-block !important; position: absolute !important; width: 1px !important; right: 0px !important; outline: 0px !important; background: 0px 0px !important; text-decoration: initial !important; text-shadow: initial !important; }
.os-windows.monocolor-emoji .md-emoji { font-family: "Segoe UI Symbol", sans-serif; }
.md-diagram-panel > svg { max-width: 100%; }
[lang="flow"] svg, [lang="mermaid"] svg { max-width: 100%; height: auto; }
[lang="mermaid"] .node text { font-size: 1rem; }
table tr th { border-bottom: 0px; }
video { max-width: 100%; display: block; margin: 0px auto; }
iframe { max-width: 100%; width: 100%; border: none; }
.highlight td, .highlight tr { border: 0px; }
mark { background: rgb(255, 255, 0); color: rgb(0, 0, 0); }
.md-html-inline .md-plain, .md-html-inline strong, mark .md-inline-math, mark strong { color: inherit; }
.md-expand mark .md-meta { opacity: 0.3 !important; }
mark .md-meta { color: rgb(0, 0, 0); }
@media print {
  .typora-export h1, .typora-export h2, .typora-export h3, .typora-export h4, .typora-export h5, .typora-export h6 { break-inside: avoid; }
}
.md-diagram-panel .messageText { stroke: none !important; }
.md-diagram-panel .start-state { fill: var(--node-fill); }
.md-diagram-panel .edgeLabel rect { opacity: 1 !important; }
.md-fences.md-fences-math { font-size: 1em; }
.md-fences-advanced:not(.md-focus) { padding: 0px; white-space: nowrap; border: 0px; }
.md-fences-advanced:not(.md-focus) { background: inherit; }
.typora-export-show-outline .typora-export-content { max-width: 1440px; margin: auto; display: flex; flex-direction: row; }
.typora-export-sidebar { width: 300px; font-size: 0.8rem; margin-top: 80px; margin-right: 18px; }
.typora-export-show-outline #write { --webkit-flex:2; flex: 2 1 0%; }
.typora-export-sidebar .outline-content { position: fixed; top: 0px; max-height: 100%; overflow: hidden auto; padding-bottom: 30px; padding-top: 60px; width: 300px; }
@media screen and (max-width: 1024px) {
  .typora-export-sidebar, .typora-export-sidebar .outline-content { width: 240px; }
}
@media screen and (max-width: 800px) {
  .typora-export-sidebar { display: none; }
}
.outline-content li, .outline-content ul { margin-left: 0px; margin-right: 0px; padding-left: 0px; padding-right: 0px; list-style: none; overflow-wrap: anywhere; }
.outline-content ul { margin-top: 0px; margin-bottom: 0px; }
.outline-content strong { font-weight: 400; }
.outline-expander { width: 1rem; height: 1.42857rem; position: relative; display: table-cell; vertical-align: middle; cursor: pointer; padding-left: 4px; }
.outline-expander::before { content: ""; position: relative; font-family: Ionicons; display: inline-block; font-size: 8px; vertical-align: middle; }
.outline-item { padding-top: 3px; padding-bottom: 3px; cursor: pointer; }
.outline-expander:hover::before { content: ""; }
.outline-h1 > .outline-item { padding-left: 0px; }
.outline-h2 > .outline-item { padding-left: 1em; }
.outline-h3 > .outline-item { padding-left: 2em; }
.outline-h4 > .outline-item { padding-left: 3em; }
.outline-h5 > .outline-item { padding-left: 4em; }
.outline-h6 > .outline-item { padding-left: 5em; }
.outline-label { cursor: pointer; display: table-cell; vertical-align: middle; text-decoration: none; color: inherit; }
.outline-label:hover { text-decoration: underline; }
.outline-item:hover { border-color: rgb(245, 245, 245); background-color: var(--item-hover-bg-color); }
.outline-item:hover { margin-left: -28px; margin-right: -28px; border-left: 28px solid transparent; border-right: 28px solid transparent; }
.outline-item-single .outline-expander::before, .outline-item-single .outline-expander:hover::before { display: none; }
.outline-item-open > .outline-item > .outline-expander::before { content: ""; }
.outline-children { display: none; }
.info-panel-tab-wrapper { display: none; }
.outline-item-open > .outline-children { display: block; }
.typora-export .outline-item { padding-top: 1px; padding-bottom: 1px; }
.typora-export .outline-item:hover { margin-right: -8px; border-right: 8px solid transparent; }
.typora-export .outline-expander::before { content: "+"; font-family: inherit; top: -1px; }
.typora-export .outline-expander:hover::before, .typora-export .outline-item-open > .outline-item > .outline-expander::before { content: "−"; }
.typora-export-collapse-outline .outline-children { display: none; }
.typora-export-collapse-outline .outline-item-open > .outline-children, .typora-export-no-collapse-outline .outline-children { display: block; }
.typora-export-no-collapse-outline .outline-expander::before { content: "" !important; }
.typora-export-show-outline .outline-item-active > .outline-item .outline-label { font-weight: 700; }
.md-inline-math-container mjx-container { zoom: 0.95; }
mjx-container { break-inside: avoid; }


:root {
  --mermaid-theme: night;
}

[lang='mermaid'] .label {
  color: #333;
}

/* CSS Document */

/** code highlight */

.cm-s-inner .cm-variable,
.cm-s-inner .cm-operator,
.cm-s-inner .cm-property {
    color: #b8bfc6;
}

.cm-s-inner .cm-keyword {
    color: #C88FD0;
}

.cm-s-inner .cm-tag {
    color: #7DF46A;
}

.cm-s-inner .cm-attribute {
    color: #7575E4;
}

.CodeMirror div.CodeMirror-cursor {
    border-left: 1px solid #b8bfc6;
    z-index: 3;
}

.cm-s-inner .cm-string {
    color: #D26B6B;
}

.cm-s-inner .cm-comment,
.cm-s-inner.cm-comment {
    color: #DA924A;
}

.cm-s-inner .cm-header,
.cm-s-inner .cm-def,
.cm-s-inner.cm-header,
.cm-s-inner.cm-def {
    color: #8d8df0;
}

.cm-s-inner .cm-quote,
.cm-s-inner.cm-quote {
    color: #57ac57;
}

.cm-s-inner .cm-hr {
    color: #d8d5d5;
}

.cm-s-inner .cm-link {
    color: #d3d3ef;
}

.cm-s-inner .cm-negative {
    color: #d95050;
}

.cm-s-inner .cm-positive {
    color: #50e650;
}

.cm-s-inner .cm-string-2 {
    color: #f50;
}

.cm-s-inner .cm-meta,
.cm-s-inner .cm-qualifier {
    color: #b7b3b3;
}

.cm-s-inner .cm-builtin {
    color: #f3b3f8;
}

.cm-s-inner .cm-bracket {
    color: #997;
}

.cm-s-inner .cm-atom,
.cm-s-inner.cm-atom {
    color: #84B6CB;
}

.cm-s-inner .cm-number {
    color: #64AB8F;
}

.cm-s-inner .cm-variable {
    color: #b8bfc6;
}

.cm-s-inner .cm-variable-2 {
    color: #9FBAD5;
}

.cm-s-inner .cm-variable-3 {
    color: #1cc685;
}

.CodeMirror-selectedtext,
.CodeMirror-selected {
    background: #4a89dc;
    color: #fff !important;
    text-shadow: none;
}

.CodeMirror-gutters {
    border-right: none;
}

/* CSS Document */

/** markdown source **/
.cm-s-typora-default .cm-header, 
.cm-s-typora-default .cm-property
{
    color: #cebcca;
}

.CodeMirror.cm-s-typora-default div.CodeMirror-cursor{
    border-left: 3px solid #b8bfc6;
}

.cm-s-typora-default .cm-comment {
    color: #9FB1FF;
}

.cm-s-typora-default .cm-string {
    color: #A7A7D9
}

.cm-s-typora-default .cm-atom, .cm-s-typora-default .cm-number {
    color: #848695;
    font-style: italic;
}

.cm-s-typora-default .cm-link {
    color: #95B94B;
}

.cm-s-typora-default .CodeMirror-activeline-background {
    background: rgba(51, 51, 51, 0.72);
}

.cm-s-typora-default .cm-comment, .cm-s-typora-default .cm-code {
	color: #8aa1e1;
}@import "";
@import "";
@import "";

:root {
    --bg-color:  #363B40;
    --side-bar-bg-color: #2E3033;
    --text-color: #b8bfc6;

    --select-text-bg-color:#4a89dc;

    --item-hover-bg-color: #0a0d16;
    --control-text-color: #b7b7b7;
    --control-text-hover-color: #eee;
    --window-border: 1px solid #555;

    --active-file-bg-color: rgb(34, 34, 34);
    --active-file-border-color: #8d8df0;

    --primary-color: #a3d5fe;

    --active-file-text-color: white;
    --item-hover-bg-color: #70717d;
    --item-hover-text-color: white;
    --primary-color: #6dc1e7;

    --rawblock-edit-panel-bd: #333;

    --search-select-bg-color: #428bca;
}

html {
    font-size: 16px;
    -webkit-font-smoothing: antialiased;
}

html,
body {
    -webkit-text-size-adjust: 100%;
    -ms-text-size-adjust: 100%;
    background: #363B40;
    background: var(--bg-color);
    fill: currentColor;
    line-height: 1.625rem;
}

#write {
    max-width: 914px;
}


@media only screen and (min-width: 1400px) {
	#write {
		max-width: 1024px;
	}
}

@media only screen and (min-width: 1800px) {
	#write {
		max-width: 1200px;
	}
}

html,
body,
button,
input,
select,
textarea,
div.code-tooltip-content {
    color: #b8bfc6;
    border-color: transparent;
}

div.code-tooltip,
.md-hover-tip .md-arrow:after {
    background: #333;
}

.native-window #md-notification {
    border: 1px solid #70717d;
}

.popover.bottom > .arrow:after {
    border-bottom-color: #333;
}

html,
body,
button,
input,
select,
textarea {
    font-family: "Helvetica Neue", Helvetica, Arial, 'Segoe UI Emoji', sans-serif;
}

hr {
    height: 2px;
    border: 0;
    margin: 24px 0 !important;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: "Lucida Grande", "Corbel", sans-serif;
    font-weight: normal;
    clear: both;
    -ms-word-wrap: break-word;
    word-wrap: break-word;
    margin: 0;
    padding: 0;
    color: #DEDEDE
}

h1 {
    font-size: 2.5rem;
    /* 36px */
    line-height: 2.75rem;
    /* 40px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1.5px;
}

h2 {
    font-size: 1.63rem;
    /* 24px */
    line-height: 1.875rem;
    /* 30px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1px;
    font-weight: bold;
}

h3 {
    font-size: 1.17rem;
    /* 18px */
    line-height: 1.5rem;
    /* 24px */
    margin-bottom: 1.5rem;
    /* 24px */
    letter-spacing: -1px;
    font-weight: bold;
}

h4 {
    font-size: 1.12rem;
    /* 16px */
    line-height: 1.375rem;
    /* 22px */
    margin-bottom: 1.5rem;
    /* 24px */
    color: white;
}

h5 {
    font-size: 0.97rem;
    /* 16px */
    line-height: 1.25rem;
    /* 22px */
    margin-bottom: 1.5rem;
    /* 24px */
    font-weight: bold;
}

h6 {
    font-size: 0.93rem;
    /* 16px */
    line-height: 1rem;
    /* 16px */
    margin-bottom: 0.75rem;
    color: white;
}

@media (min-width: 980px) {
    h3.md-focus:before,
    h4.md-focus:before,
    h5.md-focus:before,
    h6.md-focus:before {
        color: #ddd;
        border: 1px solid #ddd;
        border-radius: 3px;
        position: absolute;
        left: -1.642857143rem;
        top: .357142857rem;
        float: left;
        font-size: 9px;
        padding-left: 2px;
        padding-right: 2px;
        vertical-align: bottom;
        font-weight: normal;
        line-height: normal;
    }

    h3.md-focus:before {
        content: 'h3';
    }

    h4.md-focus:before {
        content: 'h4';
    }

    h5.md-focus:before {
        content: 'h5';
        top: 0px;
    }

    h6.md-focus:before {
        content: 'h6';
        top: 0px;
    }
}

a {
    text-decoration: none;
    outline: 0;
}

a:hover {
    outline: 0;
}

a:focus {
    outline: thin dotted;
}

sup.md-footnote {
    background-color: #555;
    color: #ddd;
}

p {
    -ms-word-wrap: break-word;
    word-wrap: break-word;
}

p,
ul,
dd,
ol,
hr,
address,
pre,
table,
iframe,
.wp-caption,
.wp-audio-shortcode,
.wp-video-shortcode {
    margin-top: 0;
    margin-bottom: 1.5rem;
    /* 24px */
}

audio:not([controls]) {
    display: none;
}

[hidden] {
    display: none;
}

::-moz-selection {
    background: #4a89dc;
    color: #fff;
    text-shadow: none;
}

*.in-text-selection,
::selection {
    background: #4a89dc;
    color: #fff;
    text-shadow: none;
}

ul,
ol {
    padding: 0 0 0 1.875rem;
    /* 30px */
}

ul {
    list-style: square;
}

ol {
    list-style: decimal;
}

ul ul,
ol ol,
ul ol,
ol ul {
    margin: 0;
}

b,
th,
dt,
strong {
    font-weight: bold;
}

i,
em,
dfn,
cite {
    font-style: italic;
}

blockquote {
    padding-left: 1.875rem;
    margin: 0 0 1.875rem 1.875rem;
    border-left: solid 2px #474d54;
    padding-left: 30px;
    margin-top: 35px;
}

pre,
code,
kbd,
tt,
var {
    font-size: 0.875em;
    font-family: Monaco, Consolas, "Andale Mono", "DejaVu Sans Mono", monospace;
}

code,
tt,
var {
    background: rgba(0, 0, 0, 0.05);
}

kbd {
    padding: 2px 4px;
    font-size: 90%;
    color: #fff;
    background-color: #333;
    border-radius: 3px;
    box-shadow: inset 0 -1px 0 rgba(0,0,0,.25);
}

pre.md-fences {
    padding: 10px 10px 10px 30px;
    margin-bottom: 20px;
    background: #333;
}

.CodeMirror-gutters {
    background: #333;
    border-right: 1px solid transparent;
}

.enable-diagrams pre.md-fences[lang="sequence"] .code-tooltip,
.enable-diagrams pre.md-fences[lang="flow"] .code-tooltip,
.enable-diagrams pre.md-fences[lang="mermaid"] .code-tooltip {
    bottom: -2.2em;
    right: 4px;
}

code,
kbd,
tt,
var {
    padding: 2px 5px;
}

table {
    max-width: 100%;
    width: 100%;
    border-collapse: collapse;
    border-spacing: 0;
}

th,
td {
    padding: 5px 10px;
    vertical-align: top;
}

a {
    -webkit-transition: all .2s ease-in-out;
    transition: all .2s ease-in-out;
}

hr {
    background: #474d54;
    /* variable */
}

h1 {
    margin-top: 2em;
}

a {
    color: #e0e0e0;
    text-decoration: underline;
}

a:hover {
    color: #fff;
}

.md-inline-math script {
    color: #81b1db;
}

b,
th,
dt,
strong {
    color: #DEDEDE;
    /* variable */
}

mark {
    background: #D3D40E;
}

blockquote {
    color: #9DA2A6;
}

table a {
    color: #DEDEDE;
    /* variable */
}

th,
td {
    border: solid 1px #474d54;
    /* variable */
}

.task-list {
    padding-left: 0;
}

.md-task-list-item {
    padding-left: 1.25rem;
}

.md-task-list-item > input {
    top: auto;
}

.md-task-list-item > input:before {
    content: "";
    display: inline-block;
    width: 0.875rem;
    height: 0.875rem;
    vertical-align: middle;
    text-align: center;
    border: 1px solid #b8bfc6;
    background-color: #363B40;
    margin-top: -0.4rem;
}

.md-task-list-item > input:checked:before,
.md-task-list-item > input[checked]:before {
    content: '\221A';
    /*◘*/
    font-size: 0.625rem;
    line-height: 0.625rem;
    color: #DEDEDE;
}

/** quick open **/
.auto-suggest-container {
    border: 0px;
    background-color: #525C65;
}

#typora-quick-open {
    background-color: #525C65;
}

#typora-quick-open input{
    background-color: #525C65;
    border: 0;
    border-bottom: 1px solid grey;
}

.typora-quick-open-item {
    background-color: inherit;
    color: inherit;
}

.typora-quick-open-item.active,
.typora-quick-open-item:hover {
    background-color: #4D8BDB;
    color: white;
}

.typora-quick-open-item:hover {
    background-color: rgba(77, 139, 219, 0.8);
}

.typora-search-spinner > div {
  background-color: #fff;
}

#write pre.md-meta-block {
    border-bottom: 1px dashed #ccc;
    background: transparent;
    padding-bottom: 0.6em;
    line-height: 1.6em;
}

.btn,
.btn .btn-default {
    background: transparent;
    color: #b8bfc6;
}

.ty-table-edit {
    border-top: 1px solid gray;
    background-color: #363B40;
}

.popover-title {
    background: transparent;
}

.md-image>.md-meta {
    color: #BBBBBB;
    background: transparent;
}

.md-expand.md-image>.md-meta {
    color: #DDD;
}

#write>h3:before,
#write>h4:before,
#write>h5:before,
#write>h6:before {
    border: none;
    border-radius: 0px;
    color: #888;
    text-decoration: underline;
    left: -1.4rem;
    top: 0.2rem;
}

#write>h3.md-focus:before {
    top: 2px;
}

#write>h4.md-focus:before {
    top: 2px;
}

.md-toc-item {
    color: #A8C2DC;
}

#write div.md-toc-tooltip {
    background-color: #363B40;
}

.dropdown-menu .btn:hover,
.dropdown-menu .btn:focus,
.md-toc .btn:hover,
.md-toc .btn:focus {
    color: white;
    background: black;
}

#toc-dropmenu {
    background: rgba(50, 54, 59, 0.93);
    border: 1px solid rgba(253, 253, 253, 0.15);
}

#toc-dropmenu .divider {
    background-color: #9b9b9b;
}

.outline-expander:before {
    top: 2px;
}

#typora-sidebar {
    box-shadow: none;
    border-right: 1px dashed;
    border-right: none;
}

.sidebar-tabs {
    border-bottom:0;
}

#typora-sidebar:hover .outline-title-wrapper {
    border-left: 1px dashed;
}

.outline-title-wrapper .btn {
    color: inherit;
}

.outline-item:hover {
    border-color: #363B40;
    background-color: #363B40;
    color: white;
}

h1.md-focus .md-attr,
h2.md-focus .md-attr,
h3.md-focus .md-attr,
h4.md-focus .md-attr,
h5.md-focus .md-attr,
h6.md-focus .md-attr,
.md-header-span .md-attr {
    color: #8C8E92;
    display: inline;
}

.md-comment {
    color: #5a95e3;
    opacity: 0.8;
}

.md-inline-math svg {
    color: #b8bfc6;
}

#math-inline-preview .md-arrow:after {
    background: black;
}

.modal-content {
    background: var(--bg-color);
    border: 0;
}

.modal-title {
    font-size: 1.5em;
}

.modal-content input {
    background-color: rgba(26, 21, 21, 0.51);
    color: white;
}

.modal-content .input-group-addon {
    color: white;
}

.modal-backdrop {
    background-color: rgba(174, 174, 174, 0.7);
}

.modal-content .btn-primary {
    border-color: var(--primary-color);
}

.md-table-resize-popover {
    background-color: #333;
}

.form-inline .input-group .input-group-addon {
    color: white;
}

#md-searchpanel {
    border-bottom: 1px dashed grey;
}

/** UI for electron */

.context-menu,
#spell-check-panel,
#footer-word-count-info {
    background-color: #42464A;
}

.context-menu.dropdown-menu .divider,
.dropdown-menu .divider {
    background-color: #777777;
    opacity: 1;
}

footer {
    color: inherit;
}

@media (max-width: 1000px) {
    footer {
        border-top: none;
    }
    footer:hover {
        color: inherit;
    }
}

#file-info-file-path .file-info-field-value:hover {
    background-color: #555;
    color: #dedede;
}

.megamenu-content,
.megamenu-opened header {
    background: var(--bg-color);
}

.megamenu-menu-panel h2,
.megamenu-menu-panel h1,
.long-btn {
    color: inherit;
}

.megamenu-menu-panel input[type='text'] {
    background: inherit;
    border: 0;
    border-bottom: 1px solid;
}

#recent-file-panel-action-btn {
    background: inherit;
    border: 1px grey solid;
}

.megamenu-menu-panel .dropdown-menu > li > a {
    color: inherit;
    background-color: #2F353A;
    text-decoration: none;
}

.megamenu-menu-panel table td:nth-child(1) {
    color: inherit;
    font-weight: bold;
}

.megamenu-menu-panel tbody tr:hover td:nth-child(1) {
    color: white;
}

.modal-footer .btn-default, 
.modal-footer .btn-primary,
.modal-footer .btn-default:not(:hover) {
    border: 1px solid;
    border-color: transparent;
}

.btn-primary {
    color: white;
}

.btn-default:hover, .btn-default:focus, .btn-default.focus, .btn-default:active, .btn-default.active, .open > .dropdown-toggle.btn-default {
    color: white;
    border: 1px solid #ddd;
    background-color: inherit;
}

.modal-header {
    border-bottom: 0;
}

.modal-footer {
    border-top: 0;
}

#recent-file-panel tbody tr:nth-child(2n-1) {
    background-color: transparent !important;
}

.megamenu-menu-panel tbody tr:hover td:nth-child(2) {
    color: inherit;
}

.megamenu-menu-panel .btn {
    border: 1px solid #eee;
    background: transparent;
}

.mouse-hover .toolbar-icon.btn:hover,
#w-full.mouse-hover,
#w-pin.mouse-hover {
    background-color: inherit;
}

.typora-node::-webkit-scrollbar {
    width: 5px;
}

.typora-node::-webkit-scrollbar-thumb:vertical {
    background: rgba(250, 250, 250, 0.3);
}

.typora-node::-webkit-scrollbar-thumb:vertical:active {
    background: rgba(250, 250, 250, 0.5);
}

#w-unpin {
    background-color: #4182c4;
}

#top-titlebar, #top-titlebar * {
    color: var(--item-hover-text-color);
}

.typora-sourceview-on #toggle-sourceview-btn,
#footer-word-count:hover,
.ty-show-word-count #footer-word-count {
    background: #333333;
}

#toggle-sourceview-btn:hover {
    color: #eee;
    background: #333333;
}

/** focus mode */
.on-focus-mode .md-end-block:not(.md-focus):not(.md-focus-container) * {
    color: #686868 !important;
}

.on-focus-mode .md-end-block:not(.md-focus) img,
.on-focus-mode .md-task-list-item:not(.md-focus-container)>input {
    opacity: #686868 !important;
}

.on-focus-mode li[cid]:not(.md-focus-container){
    color: #686868;
}

.on-focus-mode .md-fences.md-focus .CodeMirror-code>*:not(.CodeMirror-activeline) *,
.on-focus-mode .CodeMirror.cm-s-inner:not(.CodeMirror-focused) * {
    color: #686868 !important;
}

.on-focus-mode .md-focus,
.on-focus-mode .md-focus-container {
    color: #fff;
}

.on-focus-mode #typora-source .CodeMirror-code>*:not(.CodeMirror-activeline) * {
    color: #686868 !important;
}


/*diagrams*/
#write .md-focus .md-diagram-panel {
    border: 1px solid #ddd;
    margin-left: -1px;
    width: calc(100% + 2px);
}

/*diagrams*/
#write .md-focus.md-fences-with-lineno .md-diagram-panel {
    margin-left: auto;
}

.md-diagram-panel-error {
    color: #f1908e;
}

.active-tab-files #info-panel-tab-file,
.active-tab-files #info-panel-tab-file:hover,
.active-tab-outline #info-panel-tab-outline,
.active-tab-outline #info-panel-tab-outline:hover {
    color: #eee;
}

.sidebar-footer-item:hover,
.footer-item:hover {
    background: inherit;
    color: white;
}

.ty-side-sort-btn.active,
.ty-side-sort-btn:hover,
.selected-folder-menu-item a:after {
    color: white;
}

#sidebar-files-menu {
    border:solid 1px;
    box-shadow: 4px 4px 20px rgba(0, 0, 0, 0.79);
    background-color: var(--bg-color);
}

.file-list-item {
    border-bottom:none;
}

.file-list-item-summary {
    opacity: 1;
}

.file-list-item.active:first-child {
    border-top: none;
}

.file-node-background {
    height: 32px;
}

.file-library-node.active>.file-node-content,
.file-list-item.active {
    color: white;
    color: var(--active-file-text-color);
}

.file-library-node.active>.file-node-background{
    background-color: rgb(34, 34, 34);
    background-color: var(--active-file-bg-color);
}
.file-list-item.active {
    background-color: rgb(34, 34, 34);
    background-color: var(--active-file-bg-color);
}

#ty-tooltip {
    background-color: black;
    color: #eee;
}

.md-task-list-item>input {
    margin-left: -1.3em;
    margin-top: 0.3rem;
    -webkit-appearance: none;
}

.md-mathjax-midline {
    background-color: #57616b;
    border-bottom: none;
}

footer.ty-footer {
    border-color: #656565;
}

.ty-preferences .btn-default {
    background: transparent;
}
.ty-preferences .btn-default:hover {
    background: #57616b;
}

.ty-preferences select {
    border: 1px solid #989698;
    height: 21px;
}

.ty-preferences .nav-group-item.active,
.export-item.active,
.export-items-list-control,
.export-detail {
    background: var(--item-hover-bg-color);
}

.ty-preferences input[type="search"] {
    border-color: #333;
    background: #333;
    line-height: 22px;
    border-radius: 6px;
    color: white;
}

.ty-preferences input[type="search"]:focus {
    box-shadow: none;
}

[data-is-directory="true"] .file-node-content {
    margin-bottom: 0;
}

.file-node-title {
    line-height: 22px;
}

.html-for-mac .file-node-open-state, .html-for-mac .file-node-icon {
    line-height: 26px;
}

::-webkit-scrollbar-thumb {
    background: rgba(230, 230, 230, 0.30);
}

::-webkit-scrollbar-thumb:active {
    background: rgba(230, 230, 230, 0.50);
}

#typora-sidebar:hover div.sidebar-content-content::-webkit-scrollbar-thumb:horizontal {
    background: rgba(230, 230, 230, 0.30);
}

.nav-group-item:active {
    background-color: #474d54 !important;
}

.md-search-hit {
    background: rgba(199, 140, 60, 0.81);
    color: #eee;
}

.md-search-hit * {
    color: #eee;
}

#md-searchpanel input {
    color: white;
}

.modal-backdrop.in {
    opacity: 1;
    backdrop-filter: blur(1px);
}

.clear-btn-icon {
    top: 8px;
}

/* try fix https://github.com/typora/typora-issues/issues/5253 */
.file-node-expanded>.file-node-children {
    display: grid;
  }


</style><title>API接口</title>
</head>
<body class='typora-export os-windows'><div class='typora-export-content'>
<div id='write'  class=''><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p><div class='md-toc' mdtype='toc'><p class="md-toc-content" role="list"><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n6"><a class="md-toc-inner" href="#消息格式">消息格式</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n28"><a class="md-toc-inner" href="#以下标题后的括号内为请求url----返回的数据是指消息格式中的data----传参方式默认为基本传参url中有参数时为url传参json传参会特别标记">以下标题后的括号内为请求URL  ||  返回的数据是指消息格式中的data  ||  传参方式默认为基本传参，URL中有参数时为URL传参，JSON传参会特别标记</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n29"><a class="md-toc-inner" href="#关于user表的请求">关于user表的请求 </a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n30"><a class="md-toc-inner" href="#get-1">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n31"><a class="md-toc-inner" href="#登录请求-user）">登录请求（ /user）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n51"><a class="md-toc-inner" href="#查询用户useruseridinfo）">查询用户（/user/{user_id}/info）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n56"><a class="md-toc-inner" href="#根据用户id返回token和用户信息刷脸登录useruseridface）">根据用户ID返回token和用户信息【刷脸登录】（/user/{user_id}/face）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n61"><a class="md-toc-inner" href="#查询用户名是否存在userusername）">查询用户名是否存在（/user/username）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n76"><a class="md-toc-inner" href="#查询邮箱是否存在useremail）">查询邮箱是否存在（/user/email）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n91"><a class="md-toc-inner" href="#邮箱发送验证码useremailcode）">邮箱发送验证码（/user/email/code）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n106"><a class="md-toc-inner" href="#邮箱验证useremailvertify）">邮箱验证（/user/email/vertify）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n126"><a class="md-toc-inner" href="#推荐用户userrecommend）">推荐用户（/user/recommend）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n141"><a class="md-toc-inner" href="#模糊搜索用户userkeyword）">模糊搜索用户（/user/keyword）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n161"><a class="md-toc-inner" href="#验证密码是否正确userpassword）">验证密码是否正确（/user/password）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n181"><a class="md-toc-inner" href="#post-1">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n182"><a class="md-toc-inner" href="#注册请求user--json普通传参">注册请求（/user)  <mark>JSON+普通传参</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n265"><a class="md-toc-inner" href="#patch-1">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n266"><a class="md-toc-inner" href="#使用密码更改密码userpassword）">使用密码更改密码（/user/password）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n286"><a class="md-toc-inner" href="#使用邮箱更改密码userpasswordemail）">使用邮箱更改密码（/user/password/{email}）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n316"><a class="md-toc-inner" href="#更改邮箱useremail）">更改邮箱（/user/email）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n346"><a class="md-toc-inner" href="#修改用户信息user）json">修改用户信息（/user）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n351"><a class="md-toc-inner" href="#delete-1">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n352"><a class="md-toc-inner" href="#注销账号user）">注销账号（/user）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n367"><a class="md-toc-inner" href="#退出登录usertoken）">退出登录（/user/token）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n382"><a class="md-toc-inner" href="#关于topic表的请求">关于Topic表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n383"><a class="md-toc-inner" href="#get-2">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n384"><a class="md-toc-inner" href="#查询所有一级话题topic）">查询所有一级话题（/topic）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n389"><a class="md-toc-inner" href="#查询父话题topicparenttopicid）">查询父话题（/topic/parent_topic_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n404"><a class="md-toc-inner" href="#查询子话题topictopicid）">查询子话题（/topic/topic_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n420"><a class="md-toc-inner" href="#获取所有话题topicall）">获取所有话题（/topic/all）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n425"><a class="md-toc-inner" href="#post-2">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n426"><a class="md-toc-inner" href="#新增话题topic）json">新增话题（/topic）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n461"><a class="md-toc-inner" href="#patch-2">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n462"><a class="md-toc-inner" href="#更改话题图片topictopicimage）">更改话题图片（/topic/topic_image）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n482"><a class="md-toc-inner" href="#更改话题描述topictopicdesc）">更改话题描述（/topic/topic_desc）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n502"><a class="md-toc-inner" href="#更改话题名topictopicname）">更改话题名（/topic/topic_name）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n522"><a class="md-toc-inner" href="#关于question表的请求">关于Question表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n523"><a class="md-toc-inner" href="#get-3">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n524"><a class="md-toc-inner" href="#查询所有问题question）">查询所有问题（/question）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n539"><a class="md-toc-inner" href="#根据话题查询问题questiontopicid）">根据话题查询问题（/question/topic_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n559"><a class="md-toc-inner" href="#根据标题或内容搜索问题questionkeyword）">根据标题或内容搜索问题（/question/keyword）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n579"><a class="md-toc-inner" href="#获取首页和关注的问题列表questionlist）">获取首页和关注的问题列表（/question/list）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n619"><a class="md-toc-inner" href="#根据问题点赞数降序返回问题列表questionlikedesc）">根据问题点赞数降序返回问题列表（/question/like/desc）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n644"><a class="md-toc-inner" href="#根据用户id返回用户提的问题列表questionuserid）">根据用户ID返回用户提的问题列表（/question/user_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n659"><a class="md-toc-inner" href="#查询用户是否对某个问题点赞questionlike）">查询用户是否对某个问题点赞（/question/like）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n679"><a class="md-toc-inner" href="#根据问题id查询问题详情questiondetail">根据问题id查询问题详情(/question/detail)</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n694"><a class="md-toc-inner" href="#根据问题id查询提出问题的用户idquestionuserid）">根据问题id查询提出问题的用户id（/question/user/id）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n709"><a class="md-toc-inner" href="#post-3">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n710"><a class="md-toc-inner" href="#新增问题questiontopicidlist）json普通传参">新增问题（/question/topic_id/list）<mark>JSON+普通传参</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n747"><a class="md-toc-inner" href="#patch-3">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n748"><a class="md-toc-inner" href="#用户给某个问题点赞questionlike）">用户给某个问题点赞（/question/like）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n768"><a class="md-toc-inner" href="#delete-2">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n769"><a class="md-toc-inner" href="#删除问题questionquestionid）">删除问题（/question/{question_id}）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n772"><a class="md-toc-inner" href="#取消点赞questionlike）">取消点赞（/question/like）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n792"><a class="md-toc-inner" href="#关于answer的请求">关于Answer的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n793"><a class="md-toc-inner" href="#get-4">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n794"><a class="md-toc-inner" href="#查询某问题的回答answerquestionid）">查询某问题的回答（/answer/question_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n814"><a class="md-toc-inner" href="#查询某用户的回答answeruserid）">查询某用户的回答（/answer/user_id）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n829"><a class="md-toc-inner" href="#查询某用户是否点赞某个回答answerlike）">查询某用户是否点赞某个回答（/answer/like）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1646"><a class="md-toc-inner" href="#查询所有回答answer）">查询所有回答（/answer）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n849"><a class="md-toc-inner" href="#post-4">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n850"><a class="md-toc-inner" href="#新增回答answer）json">新增回答（/answer）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n875"><a class="md-toc-inner" href="#patch-4">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n876"><a class="md-toc-inner" href="#点赞回答answerlike）">点赞回答（/answer/like）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n896"><a class="md-toc-inner" href="#delete-3">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n897"><a class="md-toc-inner" href="#删除回答answer）">删除回答（/answer）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n912"><a class="md-toc-inner" href="#取消点赞answerlike）">取消点赞（/answer/like）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n932"><a class="md-toc-inner" href="#关于comment表的请求">关于Comment表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n933"><a class="md-toc-inner" href="#get-5">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n934"><a class="md-toc-inner" href="#获取最新评论commentlatest）">获取最新评论（/comment/latest）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n959"><a class="md-toc-inner" href="#获取默认评论commentlatest）">获取默认评论（/comment/latest）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n984"><a class="md-toc-inner" href="#查询用户是否点赞commentlike）">查询用户是否点赞（/comment/like）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1004"><a class="md-toc-inner" href="#根据评论点赞数降序获取评论commentlikedesc）">根据评论点赞数降序获取评论（/comment/like/desc）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1029"><a class="md-toc-inner" href="#post-5">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1030"><a class="md-toc-inner" href="#发送评论comment）json">发送评论（/comment）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1070"><a class="md-toc-inner" href="#patch-5">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1071"><a class="md-toc-inner" href="#点赞评论commentlike）">点赞评论（/comment/like）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1091"><a class="md-toc-inner" href="#取消点赞commentlikecancel）">取消点赞（/comment/like/cancel）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1111"><a class="md-toc-inner" href="#delete-4">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1112"><a class="md-toc-inner" href="#删除评论comment）">删除评论（/comment）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1127"><a class="md-toc-inner" href="#关于follow表的请求">关于Follow表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1128"><a class="md-toc-inner" href="#get-6">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1129"><a class="md-toc-inner" href="#获取用户关注列表follow）">获取用户关注列表（/follow）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1149"><a class="md-toc-inner" href="#获取用户关注数followcount）">获取用户关注数（/follow/count）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1169"><a class="md-toc-inner" href="#获取粉丝数followfanscount）">获取粉丝数（/follow/fans/count）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1189"><a class="md-toc-inner" href="#查询用户是否关注followisfollow）">查询用户是否关注（/follow/isFollow）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1214"><a class="md-toc-inner" href="#获取用户粉丝列表followfans）">获取用户粉丝列表（/follow/fans）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1229"><a class="md-toc-inner" href="#post-6">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1230"><a class="md-toc-inner" href="#用户关注follow）">用户关注（/follow）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1255"><a class="md-toc-inner" href="#delete-5">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1256"><a class="md-toc-inner" href="#取消关注follow）">取消关注（/follow）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1281"><a class="md-toc-inner" href="#关于collecton表的请求">关于Collecton表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1282"><a class="md-toc-inner" href="#get-7">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1283"><a class="md-toc-inner" href="#获取用户的收藏collection）">获取用户的收藏（/collection）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1298"><a class="md-toc-inner" href="#获取用户收藏数collectioncount）">获取用户收藏数（/collection/count）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1313"><a class="md-toc-inner" href="#post-7">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1314"><a class="md-toc-inner" href="#添加收藏collection）">添加收藏（/collection）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1334"><a class="md-toc-inner" href="#delete-6">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1335"><a class="md-toc-inner" href="#取消收藏collection）">取消收藏（/collection）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1350"><a class="md-toc-inner" href="#关于notice表的请求">关于Notice表的请求</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1351"><a class="md-toc-inner" href="#get-8">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1352"><a class="md-toc-inner" href="#选取用户的某一类型消息notice）">选取用户的某一类型消息（/notice）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1372"><a class="md-toc-inner" href="#post-8">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1373"><a class="md-toc-inner" href="#发送消息notice）json">发送消息（/notice）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1408"><a class="md-toc-inner" href="#delete-7">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1409"><a class="md-toc-inner" href="#删除消息notice）">删除消息（/notice）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1424"><a class="md-toc-inner" href="#关于message表的请求发消息）">关于Message表的请求（发消息）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1425"><a class="md-toc-inner" href="#get-9">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1426"><a class="md-toc-inner" href="#获取当前用户聊过天的用户列表messageusers）">获取当前用户聊过天的用户列表（/message/users）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1441"><a class="md-toc-inner" href="#获取当前用户与指定用户的聊天记录messagerecords）">获取当前用户与指定用户的聊天记录（/message/records）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1461"><a class="md-toc-inner" href="#判断当前用户与指定用户是否有聊天记录messagechatted）">判断当前用户与指定用户是否有聊天记录（/message/chatted）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1481"><a class="md-toc-inner" href="#post-9">POST</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1482"><a class="md-toc-inner" href="#新增聊天关系messageadd）">新增聊天关系（/message/add）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1502"><a class="md-toc-inner" href="#给所有用户发送消息messageall）">给所有用户发送消息（/message/all）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1523"><a class="md-toc-inner" href="#给指定用户发送消息meaasgeone）json">给指定用户发送消息（/meaasge/one）<mark>JSON</mark></a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1543"><a class="md-toc-inner" href="#关于管理员表的请求admin）">关于管理员表的请求（Admin）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1544"><a class="md-toc-inner" href="#get-10">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1545"><a class="md-toc-inner" href="#管理员登录admin）">管理员登录（/admin）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1566"><a class="md-toc-inner" href="#获取所有用户信息adminuser）">获取所有用户信息（/admin/user）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1571"><a class="md-toc-inner" href="#管理员获取信息admininfo）">管理员获取信息（/admin/info）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1574"><a class="md-toc-inner" href="#筛选用户adminuserfilter）">筛选用户（/admin/user/filter）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1594"><a class="md-toc-inner" href="#获得近7日问题回答用户增长情况admindayinfo）">获得近7日问题，回答，用户增长情况（/admin/dayInfo）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1597"><a class="md-toc-inner" href="#获取与话题相关的数据admintopic）">获取与话题相关的数据（/admin/topic）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1600"><a class="md-toc-inner" href="#patch-6">PATCH</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1601"><a class="md-toc-inner" href="#重置用户密码adminuseridpassword）">重置用户密码（/admin/{user_id}/password）</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1604"><a class="md-toc-inner" href="#更新上次登录时间admintime）">更新上次登录时间（/admin/time）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1607"><a class="md-toc-inner" href="#delete-8">DELETE</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1608"><a class="md-toc-inner" href="#管理员退出登录admin）">管理员退出登录（/admin）</a></span><span role="listitem" class="md-toc-item md-toc-h2" data-ref="n1623"><a class="md-toc-inner" href="#其他union）">其他（Union）</a></span><span role="listitem" class="md-toc-item md-toc-h3" data-ref="n1624"><a class="md-toc-inner" href="#get-11">GET</a></span><span role="listitem" class="md-toc-item md-toc-h4" data-ref="n1625"><a class="md-toc-inner" href="#联合查询001union001）">联合查询001（/union/001）</a></span></p></div><p>&nbsp;</p><h2 id='消息格式'><span>消息格式</span></h2><ul><li><p><span>请求的返回均以此格式返回</span></p></li></ul><figure><table><thead><tr><th><span>属性</span></th><th><span>取值范围</span></th><th><span>数据类型</span></th></tr></thead><tbody><tr><td><span>status</span></td><td><mark><span>0</span></mark><span>代表请求成功 </span><mark><span>1</span></mark><span>代表请求失败</span></td><td><span>int</span></td></tr><tr><td><span>message</span></td><td><span>消息提示信息</span></td><td><span>String</span></td></tr><tr><td><span>data</span></td><td><span>返回的数据（根据你访问的数据其类型不定）</span></td><td><span>T</span></td></tr></tbody></table></figure><p><span> </span></p><h2 id='以下标题后的括号内为请求url----返回的数据是指消息格式中的data----传参方式默认为基本传参url中有参数时为url传参json传参会特别标记'><span>以下标题后的括号内为请求URL  ||  返回的数据是指消息格式中的data  ||  传参方式默认为基本传参，URL中有参数时为URL传参，JSON传参会特别标记</span></h2><h2 id='关于user表的请求'><span>关于user表的请求 </span></h2><h3 id='get-1'><span>GET</span></h3><h4 id='登录请求-user）'><span>登录请求（ /user）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>username</span></td><td><span>String</span></td><td><span>用户名</span></td><td><span>true</span></td></tr><tr><td><span>password</span></td><td><span>String</span></td><td><span>密码</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型  Map：记录的是token和User信息</span></p><p>&nbsp;</p><h4 id='查询用户useruseridinfo）'><span>查询用户（/user/{user_id}/info）</span></h4><p><span>无基本传参</span></p><hr /><p><span>data类型 User：返回用户信息</span></p><p>&nbsp;</p><h4 id='根据用户id返回token和用户信息刷脸登录useruseridface）'><span>根据用户ID返回token和用户信息【刷脸登录】（/user/{user_id}/face）</span></h4><p><span>无基本传参</span></p><hr /><p><span>data类型 Map：返回token和用户信息</span></p><p>&nbsp;</p><h4 id='查询用户名是否存在userusername）'><span>查询用户名是否存在（/user/username）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>username</span></td><td><span>String</span></td><td><span>用户名</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为可以用户名不存在，可以创建 </span></p><p>&nbsp;</p><h4 id='查询邮箱是否存在useremail）'><span>查询邮箱是否存在（/user/email）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>email</span></td><td><span>String</span></td><td><span>邮箱</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为可以邮箱不存在，可以创建 </span></p><p>&nbsp;</p><h4 id='邮箱发送验证码useremailcode）'><span>邮箱发送验证码（/user/email/code）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>email</span></td><td><span>String</span></td><td><span>邮箱</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 String:给用户的token</span></p><p>&nbsp;</p><h4 id='邮箱验证useremailvertify）'><span>邮箱验证（/user/email/vertify）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>token</span></td><td><span>String</span></td><td><span>令牌</span></td><td><span>true</span></td></tr><tr><td><span>code</span></td><td><span>String</span></td><td><span>验证码</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为验证码正确</span></p><p>&nbsp;</p><h4 id='推荐用户userrecommend）'><span>推荐用户（/user/recommend）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><User><span>: 返回推荐用户的信息</span></p><p>&nbsp;</p><h4 id='模糊搜索用户userkeyword）'><span>模糊搜索用户（/user/keyword）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>keyword</span></td><td><span>String</span></td><td><span>关键词</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><User><span>: 返回搜索用户的信息</span></p><p>&nbsp;</p><h4 id='验证密码是否正确userpassword）'><span>验证密码是否正确（/user/password）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>password</span></td><td><span>String</span></td><td><span>密码</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为验证通过</span></p><p>&nbsp;</p><h3 id='post-1'><span>POST</span></h3><h4 id='注册请求user--json普通传参'><span>注册请求（/user)  </span><mark><span>JSON+普通传参</span></mark></h4><p><mark><span>JSON</span></mark></p><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>username</span></td><td><span>String</span></td><td><span>用户名</span></td><td><span>true</span></td></tr><tr><td><span>password</span></td><td><span>String</span></td><td><span>密码</span></td><td><span>true</span></td></tr><tr><td><span>email</span></td><td><span>String</span></td><td><span>邮箱</span></td><td><span>true</span></td></tr><tr><td><mark><span>以下为可选</span></mark></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td><span>simple_desc</span></td><td><span>String</span></td><td><span>简单描述</span></td><td><span>false</span></td></tr><tr><td><span>gender</span></td><td><span>int</span></td><td><span>性别(default:1)  1代表男</span></td><td><span>false</span></td></tr><tr><td><span>position</span></td><td><span>String</span></td><td><span>地址</span></td><td><span>false</span></td></tr><tr><td><span>industry</span></td><td><span>String</span></td><td><span>职业</span></td><td><span>false</span></td></tr><tr><td><span>career</span></td><td><span>String</span></td><td><span>生涯</span></td><td><span>false</span></td></tr><tr><td><span>education</span></td><td><span>String</span></td><td><span>教育程度</span></td><td><span>false</span></td></tr><tr><td><span>full_desc</span></td><td><span>String</span></td><td><span>自我描述</span></td><td><span>false</span></td></tr></tbody></table></figure><p><mark><span>普通参数</span></mark></p><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>code</span></td><td><span>String</span></td><td><span>邮箱验证码</span></td><td><span>true</span></td></tr><tr><td><span>token</span></td><td><span>String</span></td><td><span>邮箱令牌</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为注册成功</span></p><p>&nbsp;</p><h3 id='patch-1'><span>PATCH</span></h3><h4 id='使用密码更改密码userpassword）'><span>使用密码更改密码（/user/password）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>email</span></td><td><span>String</span></td><td><span>邮箱</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h4 id='使用邮箱更改密码userpasswordemail）'><span>使用邮箱更改密码（/user/password/{email}）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>password</span></td><td><span>String</span></td><td><span>密码</span></td><td><span>true</span></td></tr><tr><td><span>token</span></td><td><span>String</span></td><td><span>邮箱令牌</span></td><td><span>true</span></td></tr><tr><td><span>code</span></td><td><span>String</span></td><td><span>邮箱验证码</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h4 id='更改邮箱useremail）'><span>更改邮箱（/user/email）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>email</span></td><td><span>String</span></td><td><span>新邮箱</span></td><td><span>true</span></td></tr><tr><td><span>token</span></td><td><span>String</span></td><td><span>新邮箱的令牌</span></td><td><span>true</span></td></tr><tr><td><span>code</span></td><td><span>String</span></td><td><span>新邮箱的验证码</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h4 id='修改用户信息user）json'><span>修改用户信息（/user）</span><mark><span>JSON</span></mark></h4><p><span>User数据</span></p><hr /><p><span>data类型 bool：true为修改成功</span></p><p>&nbsp;</p><h3 id='delete-1'><span>DELETE</span></h3><h4 id='注销账号user）'><span>注销账号（/user）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：ture为注销成功</span></p><p>&nbsp;</p><h4 id='退出登录usertoken）'><span>退出登录（/user/token）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：ture为成功退出</span></p><p>&nbsp;</p><h2 id='关于topic表的请求'><span>关于Topic表的请求</span></h2><h3 id='get-2'><span>GET</span></h3><h4 id='查询所有一级话题topic）'><span>查询所有一级话题（/topic）</span></h4><p><span>无参</span></p><hr /><p><span>data类型 List</span><Topic><span> : 所有一级话题</span></p><p>&nbsp;</p><h4 id='查询父话题topicparenttopicid）'><span>查询父话题（/topic/parent_topic_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Topic：父话题</span></p><p>&nbsp;</p><h4 id='查询子话题topictopicid）'><span>查询子话题（/topic/topic_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Topic><span> : 所有子话题</span></p><p>&nbsp;</p><h4 id='获取所有话题topicall）'><span>获取所有话题（/topic/all）</span></h4><p><span>无参</span></p><hr /><p><span>data类型 List</span><Topic><span> : 所有话题</span></p><p>&nbsp;</p><h3 id='post-2'><span>POST</span></h3><h4 id='新增话题topic）json'><span>新增话题（/topic）</span><mark><span>JSON</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_name</span></td><td><span>String</span></td><td><span>话题名</span></td><td><span>true</span></td></tr><tr><td><span>topic_desc</span></td><td><span>String</span></td><td><span>话题描述</span></td><td><span>true</span></td></tr><tr><td><span>topic_image</span></td><td><span>String</span></td><td><span>话题图片路径（不传则使用默认图片路径）</span></td><td><span>false</span></td></tr><tr><td><mark><span>以下为可选</span></mark></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td><span>parent_topic_id</span></td><td><span>int</span></td><td><span>父话题ID（一级话题为NULL）</span></td><td><span>false</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为新增成功</span></p><p>&nbsp;</p><h3 id='patch-2'><span>PATCH</span></h3><h4 id='更改话题图片topictopicimage）'><span>更改话题图片（/topic/topic_image）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr><tr><td><span>topic_image</span></td><td><span>String</span></td><td><span>话题图片路径</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h4 id='更改话题描述topictopicdesc）'><span>更改话题描述（/topic/topic_desc）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr><tr><td><span>topic_desc</span></td><td><span>String</span></td><td><span>话题描述</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h4 id='更改话题名topictopicname）'><span>更改话题名（/topic/topic_name）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr><tr><td><span>topic_name</span></td><td><span>String</span></td><td><span>话题名</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为更改成功</span></p><p>&nbsp;</p><h2 id='关于question表的请求'><span>关于Question表的请求</span></h2><h3 id='get-3'><span>GET</span></h3><h4 id='查询所有问题question）'><span>查询所有问题（/question）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>current_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>:问题集合</span></p><p>&nbsp;</p><h4 id='根据话题查询问题questiontopicid）'><span>根据话题查询问题（/question/topic_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>current_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>topic_id</span></td><td><span>int</span></td><td><span>话题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>:问题集合</span></p><p>&nbsp;</p><h4 id='根据标题或内容搜索问题questionkeyword）'><span>根据标题或内容搜索问题（/question/keyword）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>current_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>keyword</span></td><td><span>String</span></td><td><span>关键字</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>:问题集合</span></p><p>&nbsp;</p><h4 id='获取首页和关注的问题列表questionlist）'><span>获取首页和关注的问题列表（/question/list）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>current_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>order_type</span></td><td><span>String</span></td><td><span>排序方式(latest、hot)</span></td><td><span>true</span></td></tr><tr><td><span>start</span></td><td><span>int</span></td><td><span>起始</span></td><td><span>true</span></td></tr><tr><td><span>limit</span></td><td><span>int</span></td><td><span>限制条数</span></td><td><span>true</span></td></tr><tr><td><mark><span>以下为可选</span></mark></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID（其他为关注，-1时为首页）</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>：问题列表</span></p><p>&nbsp;</p><h4 id='根据问题点赞数降序返回问题列表questionlikedesc）'><span>根据问题点赞数降序返回问题列表（/question/like/desc）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>current_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>start</span></td><td><span>int</span></td><td><span>起始</span></td><td><span>true</span></td></tr><tr><td><span>limit</span></td><td><span>int</span></td><td><span>限制条数</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>：问题列表</span></p><p>&nbsp;</p><h4 id='根据用户id返回用户提的问题列表questionuserid）'><span>根据用户ID返回用户提的问题列表（/question/user_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Question><span>：问题列表</span></p><p>&nbsp;</p><h4 id='查询用户是否对某个问题点赞questionlike）'><span>查询用户是否对某个问题点赞（/question/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool:true为已点赞</span></p><p>&nbsp;</p><h4 id='根据问题id查询问题详情questiondetail'><span>根据问题id查询问题详情(/question/detail)</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Question：返回问题详情</span></p><p>&nbsp;</p><h4 id='根据问题id查询提出问题的用户idquestionuserid）'><span>根据问题id查询提出问题的用户id（/question/user/id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 int：返回用户ID</span></p><p>&nbsp;</p><h3 id='post-3'><span>POST</span></h3><h4 id='新增问题questiontopicidlist）json普通传参'><span>新增问题（/question/topic_id/list）</span><mark><span>JSON+普通传参</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>question_title</span></td><td><span>String</span></td><td><span>问题标题</span></td><td><span>true</span></td></tr><tr><td><span>question_content</span></td><td><span>String</span></td><td><span>问题内容</span></td><td><span>true</span></td></tr></tbody></table></figure><p><mark><span>以下为普通参数</span></mark></p><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>topic_id_list</span></td><td><span>String</span></td><td><span>话题ID（多个ID请用空格分割）</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Question：成功则返回新增的问题</span></p><p>&nbsp;</p><h3 id='patch-3'><span>PATCH</span></h3><h4 id='用户给某个问题点赞questionlike）'><span>用户给某个问题点赞（/question/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool:true为点赞成功</span></p><p>&nbsp;</p><h3 id='delete-2'><span>DELETE</span></h3><h4 id='删除问题questionquestionid）'><span>删除问题（/question/{question_id}）</span></h4><p><span>data类型 bool：true为删除成功</span></p><p>&nbsp;</p><h4 id='取消点赞questionlike）'><span>取消点赞（/question/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool:true为取消点赞成功</span></p><p>&nbsp;</p><h2 id='关于answer的请求'><span>关于Answer的请求</span></h2><h3 id='get-4'><span>GET</span></h3><h4 id='查询某问题的回答answerquestionid）'><span>查询某问题的回答（/answer/question_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Answer><span>:回答列表</span></p><p>&nbsp;</p><h4 id='查询某用户的回答answeruserid）'><span>查询某用户的回答（/answer/user_id）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Answer><span>:回答列表</span></p><p>&nbsp;</p><h4 id='查询某用户是否点赞某个回答answerlike）'><span>查询某用户是否点赞某个回答（/answer/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>answer_id</span></td><td><span>int</span></td><td><span>回答ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为已赞</span></p><p>&nbsp;</p><h4 id='查询所有回答answer）'><span>查询所有回答（/answer）</span></h4><p><span>data类型 List</span><Answer><span>:回答列表</span></p><p>&nbsp;</p><h3 id='post-4'><span>POST</span></h3><h4 id='新增回答answer）json'><span>新增回答（/answer）</span><mark><span>JSON</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr><tr><td><span>answer_content</span></td><td><span>String</span></td><td><span>回答内容</span></td><td><span>ture</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为新增成功</span></p><p>&nbsp;</p><h3 id='patch-4'><span>PATCH</span></h3><h4 id='点赞回答answerlike）'><span>点赞回答（/answer/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>answer_id</span></td><td><span>int</span></td><td><span>回答ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Answer：成功则返回新增的回答</span></p><p>&nbsp;</p><h3 id='delete-3'><span>DELETE</span></h3><h4 id='删除回答answer）'><span>删除回答（/answer）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>answer_id</span></td><td><span>int</span></td><td><span>回答ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为删除成功</span></p><p>&nbsp;</p><h4 id='取消点赞answerlike）'><span>取消点赞（/answer/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>answer_id</span></td><td><span>int</span></td><td><span>回答ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为取消点赞成功</span></p><p>&nbsp;</p><h2 id='关于comment表的请求'><span>关于Comment表的请求</span></h2><h3 id='get-5'><span>GET</span></h3><h4 id='获取最新评论commentlatest）'><span>获取最新评论（/comment/latest）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>被评论对象的ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0表示对问题评论，1表示对回答评论)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Map&lt;Comment,List</span><Comment><span>&gt;：key为直接评论，List为评论集合</span></p><p>&nbsp;</p><h4 id='获取默认评论commentlatest）'><span>获取默认评论（/comment/latest）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>被评论对象的ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0表示对问题评论，1表示对回答评论)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Map&lt;Comment,List</span><Comment><span>&gt;：key为直接评论，List为评论集合</span></p><p>&nbsp;</p><h4 id='查询用户是否点赞commentlike）'><span>查询用户是否点赞（/comment/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>comment_id</span></td><td><span>int</span></td><td><span>评论的ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为已点赞</span></p><p>&nbsp;</p><h4 id='根据评论点赞数降序获取评论commentlikedesc）'><span>根据评论点赞数降序获取评论（/comment/like/desc）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>被评论对象的ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0表示对问题评论，1表示对回答评论)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Map&lt;Comment,List</span><Comment><span>&gt;：key为直接评论，List为评论集合</span></p><p>&nbsp;</p><h3 id='post-5'><span>POST</span></h3><h4 id='发送评论comment）json'><span>发送评论（/comment）</span><mark><span>JSON</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>comment_content</span></td><td><span>String</span></td><td><span>评论的内容</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>被评论的内容ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型（0为对问题评论，1为对回答评论）</span></td><td><span>true</span></td></tr><tr><td><mark><span>以下为可选参数</span></mark></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr><tr><td><span>at_comment_id</span></td><td><span>int</span></td><td><span>被评论的评论ID(null为评论的是问题或回答，否则评论的是其他用户的评论)</span></td><td><span>false</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Comment：成功则返回新增的评论</span></p><p>&nbsp;</p><h3 id='patch-5'><span>PATCH</span></h3><h4 id='点赞评论commentlike）'><span>点赞评论（/comment/like）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>comment_id</span></td><td><span>int</span></td><td><span>评论的ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为点赞成功</span></p><p>&nbsp;</p><h4 id='取消点赞commentlikecancel）'><span>取消点赞（/comment/like/cancel）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>comment_id</span></td><td><span>int</span></td><td><span>评论的ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为取消点赞成功</span></p><p>&nbsp;</p><h3 id='delete-4'><span>DELETE</span></h3><h4 id='删除评论comment）'><span>删除评论（/comment）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>comment_id</span></td><td><span>int</span></td><td><span>评论的ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为删除成功</span></p><p>&nbsp;</p><h2 id='关于follow表的请求'><span>关于Follow表的请求</span></h2><h3 id='get-6'><span>GET</span></h3><h4 id='获取用户关注列表follow）'><span>获取用户关注列表（/follow）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Map&lt;String, Object&gt;：关注列表</span></p><p><span> </span></p><h4 id='获取用户关注数followcount）'><span>获取用户关注数（/follow/count）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 int：关注数</span></p><p>&nbsp;</p><h4 id='获取粉丝数followfanscount）'><span>获取粉丝数（/follow/fans/count）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>id</span></td><td><span>int</span></td><td><span>获取的对应类型的主键ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 int：粉丝数</span></p><p>&nbsp;</p><h4 id='查询用户是否关注followisfollow）'><span>查询用户是否关注（/follow/isFollow）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>关注对象的主键ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为已关注</span></p><p>&nbsp;</p><h4 id='获取用户粉丝列表followfans）'><span>获取用户粉丝列表（/follow/fans）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><User><span>:粉丝列表</span></p><p>&nbsp;</p><h3 id='post-6'><span>POST</span></h3><h4 id='用户关注follow）'><span>用户关注（/follow）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>关注对象的主键ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为关注成功</span></p><p>&nbsp;</p><h3 id='delete-5'><span>DELETE</span></h3><h4 id='取消关注follow）'><span>取消关注（/follow）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>from_id</span></td><td><span>int</span></td><td><span>用户的ID</span></td><td><span>true</span></td></tr><tr><td><span>to_id</span></td><td><span>int</span></td><td><span>关注对象的主键ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-用户 1-问题 2-话题)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：ture为取消关注成功</span></p><p>&nbsp;</p><h2 id='关于collecton表的请求'><span>关于Collecton表的请求</span></h2><h3 id='get-7'><span>GET</span></h3><h4 id='获取用户的收藏collection）'><span>获取用户的收藏（/collection）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Collection><span>：收藏列表</span></p><p>&nbsp;</p><h4 id='获取用户收藏数collectioncount）'><span>获取用户收藏数（/collection/count）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 int：收藏数</span></p><p>&nbsp;</p><h3 id='post-7'><span>POST</span></h3><h4 id='添加收藏collection）'><span>添加收藏（/collection）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>answer_id</span></td><td><span>int</span></td><td><span>回答ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为添加成功</span></p><p>&nbsp;</p><h3 id='delete-6'><span>DELETE</span></h3><h4 id='取消收藏collection）'><span>取消收藏（/collection）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>collection_id</span></td><td><span>int</span></td><td><span>收藏表主键ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为取消成功</span></p><p>&nbsp;</p><h2 id='关于notice表的请求'><span>关于Notice表的请求</span></h2><h3 id='get-8'><span>GET</span></h3><h4 id='选取用户的某一类型消息notice）'><span>选取用户的某一类型消息（/notice）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>消息类型(0-系统，1-喜欢，2-评论，3-关注)</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Notice><span>: 消息列表</span></p><p>&nbsp;</p><h3 id='post-8'><span>POST</span></h3><h4 id='发送消息notice）json'><span>发送消息（/notice）</span><mark><span>JSON</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>源用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户ID</span></td><td><span>true</span></td></tr><tr><td><span>related_id</span></td><td><span>int</span></td><td><span>相关ID</span></td><td><span>true</span></td></tr><tr><td><span>type</span></td><td><span>int</span></td><td><span>消息类型(0-系统，1-喜欢，2-评论，3-关注)</span></td><td><span>true</span></td></tr><tr><td><span>content</span></td><td><span>String</span></td><td><span>内容</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为发送成功</span></p><p>&nbsp;</p><h3 id='delete-7'><span>DELETE</span></h3><h4 id='删除消息notice）'><span>删除消息（/notice）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>notice_id</span></td><td><span>int</span></td><td><span>消息主键ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool:true为删除成功</span></p><p>&nbsp;</p><h2 id='关于message表的请求发消息）'><span>关于Message表的请求（发消息）</span></h2><h3 id='get-9'><span>GET</span></h3><h4 id='获取当前用户聊过天的用户列表messageusers）'><span>获取当前用户聊过天的用户列表（/message/users）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><User><span>：用户列表</span></p><p>&nbsp;</p><h4 id='获取当前用户与指定用户的聊天记录messagerecords）'><span>获取当前用户与指定用户的聊天记录（/message/records）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Message><span>：信息列表</span></p><p>&nbsp;</p><h4 id='判断当前用户与指定用户是否有聊天记录messagechatted）'><span>判断当前用户与指定用户是否有聊天记录（/message/chatted）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为有聊天记录</span></p><p>&nbsp;</p><h3 id='post-9'><span>POST</span></h3><h4 id='新增聊天关系messageadd）'><span>新增聊天关系（/message/add）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为新增成功</span></p><p>&nbsp;</p><h4 id='给所有用户发送消息messageall）'><span>给所有用户发送消息（/message/all）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为发送成功</span></p><p>&nbsp;</p><h4 id='给指定用户发送消息meaasgeone）json'><span>给指定用户发送消息（/meaasge/one）</span><mark><span>JSON</span></mark></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>src_id</span></td><td><span>int</span></td><td><span>当前用户ID</span></td><td><span>true</span></td></tr><tr><td><span>target_id</span></td><td><span>int</span></td><td><span>目的用户</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为发送成功</span></p><p>&nbsp;</p><h2 id='关于管理员表的请求admin）'><span>关于管理员表的请求（Admin）</span></h2><h3 id='get-10'><span>GET</span></h3><h4 id='管理员登录admin）'><span>管理员登录（/admin）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>username</span></td><td><span>string</span></td><td><span>账号</span></td><td><span>true</span></td></tr><tr><td><span>password</span></td><td><span>string</span></td><td><span>密码</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 Map：用户信息</span></p><p>&nbsp;</p><h4 id='获取所有用户信息adminuser）'><span>获取所有用户信息（/admin/user）</span></h4><p><span>无参</span></p><hr /><p><span>data类型 List</span><User><span>:用户列表</span></p><p>&nbsp;</p><h4 id='管理员获取信息admininfo）'><span>管理员获取信息（/admin/info）</span></h4><p><span>data类型 Map&lt;String,String&gt;：返回管理员用户名，职位（就直接是超级管理员），上次登录时间，当前用户总量，当前问题总数，当前回答总数，今日新增用户数，今日新增问题数，今日新增回答数</span></p><p>&nbsp;</p><h4 id='筛选用户adminuserfilter）'><span>筛选用户（/admin/user/filter）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>type</span></td><td><span>int</span></td><td><span>类型(0-性别，1-用户名，2-所在地，3-职业)</span></td><td><span>true</span></td></tr><tr><td><span>value</span></td><td><span>string</span></td><td><span>筛选值</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><User><span>:用户列表</span></p><p>&nbsp;</p><h4 id='获得近7日问题回答用户增长情况admindayinfo）'><span>获得近7日问题，回答，用户增长情况（/admin/dayInfo）</span></h4><p><span>data类型 List</span><DayInfo><span>：近日情况 | 日期、用户数、问题数、回答数</span></p><p>&nbsp;</p><h4 id='获取与话题相关的数据admintopic）'><span>获取与话题相关的数据（/admin/topic）</span></h4><p><span>data类型 List&lt;Map &lt; String, Object&gt;&gt;：key为话题名字，value为话题包含的问题数</span></p><p>&nbsp;</p><h3 id='patch-6'><span>PATCH</span></h3><h4 id='重置用户密码adminuseridpassword）'><span>重置用户密码（/admin/{user_id}/password）</span></h4><p><span>data类型 bool:true为重置成功</span></p><p>&nbsp;</p><h4 id='更新上次登录时间admintime）'><span>更新上次登录时间（/admin/time）</span></h4><p><span>data类型 bool：true为更新成功</span></p><p>&nbsp;</p><h3 id='delete-8'><span>DELETE</span></h3><h4 id='管理员退出登录admin）'><span>管理员退出登录（/admin）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>admin_id</span></td><td><span>int</span></td><td><span>主键ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 bool：true为退出成功</span></p><p>&nbsp;</p><h2 id='其他union）'><span>其他（Union）</span></h2><h3 id='get-11'><span>GET</span></h3><h4 id='联合查询001union001）'><span>联合查询001（/union/001）</span></h4><figure><table><thead><tr><th><span>参数名称</span></th><th><span>类型</span></th><th><span>参数说明</span></th><th><span>是否必须</span></th></tr></thead><tbody><tr><td><span>question_id</span></td><td><span>int</span></td><td><span>问题ID</span></td><td><span>true</span></td></tr><tr><td><span>user_id</span></td><td><span>int</span></td><td><span>用户ID</span></td><td><span>true</span></td></tr></tbody></table></figure><hr /><p><span>data类型 List</span><Boolean><span>:第一个表示用户有没有关注该问题，第二个表示用户有没有点赞该问题，第三个表示用户有没有关注提出该问题的用户</span></p></div></div>
</body>
</html>